<?php

class S_Controller extends CI_Controller{
	
	//模板变量
	private $tpl_var = array();
	
	//模板主题
	private $tpl_theme = '';
	
	public function __construct()
	{
		//使用UTF-8编码		
		header("content-type:text/html; charset=utf-8");

		parent::__construct();

		//载入一些公用函数
		$this->load->helper('common');
		
		//使用上海时区
		@date_default_timezone_set(site('timezone'));
		
		//载入ci的url函数库
		$this->load->helper('url');
		
		//载入session类
		$this->load->library('session');
		
		$this->load->helper('session');
		
		//载入数据库驱动
		$this->load->database();
	}
	
	/*
	 * 往视图添加数据
	 * $name	变量名
	 * $value	变量值
	 */
	public function assign($name, $value = NULL)
	{
		if (is_array($name))
		{
			foreach ($name as $key => $value)
			{
				$this->tpl_var[$key] = $value;
			}
		}
		else
		{
			$this->tpl_var[$name] = $value;
		}
	}
	
	/*
	 * 返回视图的显示结果
	 * $tpl	视图的模板名称，不包括后缀，使用.html作为模板后缀
	 */
	public function fetch($tpl, $expire = NULL, $id = NULL)
	{
		if (isset($expire))
		{
			if ( ! isset($id))
			{
				$id = md5($this->tpl_theme.$tpl);
			}
			$this->load->library('cache');
			$content = $this->cache->get($id);
			if (FALSE!==$content)
			{
				return $content;
			}
		}
		
		//载入ui函数
		$this->load->helper('ui');

		$content = $this->load->view($tpl, $this->tpl_var, TRUE);
		
		if (isset($expire))
		{
			$this->cache->set($id, $content, $expire);
		}
		
		return $content;
	}

	/*
	 * 显示视图
	 * $tpl	视图的模板名称，不包括后缀，使用.html作为模板后缀
	 */
	public function display($tpl, $expire = NULL, $id = NULL)
	{
		exit($this->fetch($tpl, $expire, $id));
	}

	/*
	 * 切换主题
	 */
	public function set_theme($theme)
	{
		$this->tpl_theme = trim(str_replace('\\', '/', $theme), '/');
		
		if ( ! @is_dir(FCPATH.'themes/'.$this->tpl_theme))
		{
			show_error('主题 '.$theme.' 不存在');
		}
		$this->load->set_view_path(FCPATH.'themes/'.$this->tpl_theme.'/');
	}
	
	/*
	 * 获取主题
	 */
	public function get_theme()
	{
		return $this->tpl_theme;
	}
	
}

/*
 * 前台控制器
 */
class Font_Controller extends S_Controller {
	
	public function __construct()
	{
		parent::__construct();
		
		//加载网站默认主题
		$this->set_theme(site('theme'));
	}
	
}

/*
 * 后台控制器
 */
class Admin_Controller extends S_Controller {
	
	public function __construct()
	{
		parent::__construct();

		//管理员未登陆,回到登陆页面
		if ( $this->router->fetch_class()=='welcome' && ! in_array($this->router->fetch_method(), array('login', 'verify')))
		{
			if ( ! is_login())
			{
				msg('请登陆', admin_url('welcome/login'));
			}
			
			if (is_banned())
			{
				msg('账号已被禁用');
			}
			
			if ( ! is_admin())
			{
				msg('你没有权限');
			}
		}
		
		//加载系统主题
		$this->set_theme('system');
	}
	
	/*
	 * 添加
	 */
	public function insert()
	{
		if (is_post())
		{
			$this->insert_post();
		}
		else
		{
			$this->insert_get();
		}
	}
	
	/*
	 * 删除
	 */
	public function delete()
	{
		if (is_post())
		{
			$this->delete_post();
		}
		else
		{
			$this->delete_get();
		}
	}
	
	/*
	 * 修改
	 */
	public function update()
	{
		if (is_post())
		{
			$this->update_post();
		}
		else
		{
			$this->update_get();
		}
	}
	
}